/*-------------------------------------------------------------------------
 Author (C) 2009, Charles Wang <charlesw123456@gmail.com>

 This program is free software; you can redistribute it and/or modify it 
 under the terms of the GNU General Public License as published by the 
 Free Software Foundation; either version 2, or (at your option) any 
 later version.

 This program is distributed in the hope that it will be useful, but 
 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
 for more details.

 You should have received a copy of the GNU General Public License along 
 with this program; if not, write to the Free Software Foundation, Inc., 
 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

 As an exception, it is allowed to write an extension of Coco/R that is
 used as a plugin in non-free software.

 If not otherwise stated, any source code generated by Coco/R (other than 
 Coco/R itself) does not fall under the GNU General Public License.
-------------------------------------------------------------------------*/
#ifndef COCO_INDENT_H
#define COCO_INDENT_H

#ifndef  COCO_CDEFS_H
#include "c/CDefs.h"
#endif

EXTC_BEGIN

typedef struct {
    int  kIndentIn;
    int  kIndentOut;
    int  kIndentErr;
}   CcsIndentInfo_t;

typedef struct {
    const CcsIndentInfo_t * info;
    CcsBool_t               lineStart;
    int                   * indent;
    int                   * indentUsed;
    int                   * indentLast;
    int                     indentLimit;
}   CcsIndent_t;

CcsBool_t CcsIndent_Init(CcsIndent_t * self, const CcsIndentInfo_t * info);
void CcsIndent_Destruct(CcsIndent_t * self);

void CcsIndent_SetLimit(CcsIndent_t * self, const CcsToken_t * indentIn);

CcsToken_t *
CcsIndent_Generator(CcsIndent_t * self, CcsScanInput_t * input);

EXTC_END

#endif  /* COCO_INDENT_H */
